(deftemplate Pacient
    (slot nume)
    (slot temperatura)
    (slot culoarePiele)
    (slot greutate)
    (slot tuse)
    (slot ameteala)
    (slot secretiiNazale)
 )

(assert (Pacient
        	(nume Popescu)
        	(temperatura 38)
        	(culoarePiele palid)
        	(greutate mica)
        	(tuse nu)
        	(ameteala DA)
        	(secretiiNazale abundente)
        )
   )


(assert (Pacient
        	(nume Ionescu)
        	(temperatura 36.5)
        	(culoarePiele normal)
        	(greutate normal)
        	(tuse nu)
        	(ameteala nu)
        	(secretiiNazale nu)
        )
   )


(assert (Pacient
        	(nume Georgescu)
        	(temperatura 36.5)
        	(culoarePiele normal)
        	(greutate mare)
        	(tuse nu)
        	(ameteala nu)
        	(secretiiNazale nu)
        )
   )

(facts)


(defrule esteObez
    (declare (salience 4))
    (Pacient (nume ?n) (greutate ?g))
    (test  (eq ?g mare))
    =>
    (printout t "Pacientul " ?n " este obez." crlf)
    )


(defrule esteAnorexic
    (declare (salience 3))
    (Pacient (nume ?n) (culoarePiele ?c) (greutate ?g) (ameteala ?a))
    (test  (and (eq ?g mica)
    	(eq ?c palid)
    	(eq ?a DA)))
    =>
    (printout t "Pacientul " ?n " este anorexic." crlf)
    )


(defrule esteRacit
    
    (declare (salience 2))
    (Pacient (nume ?n) (temperatura ?t) (culoarePiele ?c) (secretiiNazale ?s))
    (test  (and (> ?t 37)
    	(eq ?c palid)
    	(eq ?s abundente)))
    =>
    (printout t "Pacientul " ?n " este racit." crlf)
    )



(matches)
(defrule esteSanatos
    
    (declare (salience 0))
    (Pacient (nume ?n) (temperatura ?t) (culoarePiele ?c) (greutate ?g) (tuse ?tu) (ameteala ?a) (secretiiNazale ?s))
    (test  (and (eq ?t 36.5)(eq ?c normal)(eq ?g normal)(eq ?tu nu)(eq ?a nu)(eq ?s nu)))
    =>
    (printout t "Pacientul " ?n " este sanatos." crlf)
    )

(agenda)
(view)


(run)



(watch compilations)